//
//  MapPoint.hpp
//  markerARLib
//
//  Created by fg on 5/11/16.
//  Copyright © 2016 CvidKal. All rights reserved.
//

#ifndef MapPoint_hpp
#define MapPoint_hpp

#include <stdio.h>
#include <Eigen/Dense>
#include <mutex>

namespace markerAR
{
    
class Marker;


class MapPoint
{
public:
    ~MapPoint(){delete patialj;}
    MapPoint(){patialj = nullptr;};
    MapPoint(const Eigen::Vector3d p){ pointXYZ = p;patialj = nullptr;};
    Eigen::Vector3d pointXYZ;
    static std::mutex mGlobalMutex;
    std::mutex mLocalMutex;
    MapPoint (const MapPoint&) = delete;
    Eigen::Matrix<double, 2, 3> dx_dX();
    Eigen::Matrix<double,3,6>* getPatialJ();
    Marker* marker;
private:
    
    Eigen::Matrix<double, 3, 6> *patialj;
};


}


#endif /* MapPoint_hpp */
